# # 1.下列将字符串"100"转换为数字100的正确的是( A )
# #    A、int(“100”)  B、int[“100”]  C、toInt(“100”)  D、toUp(”100”)
# # 2.下列程序执行结果是( A  )
# #   numbers = [1，5，3，9，7]
# #   numbers.sort(reverse=True)
# #   print(numbers)
# #   A、[9，7，5，3，1]
# #   B、[1，3，5，7，9]
# #   C、1，3，5，7，9
# #   D、9，7，5，3，1
# # 3.如何在列表中添加一个元素
# # l.append("a")
# # 4.对于列表什么是越界
# #答：超出下标的范围
# # 5.说出变量类型中，哪些是可变数据类型，哪些不可变数据类型
# #可变：list dict
# #不可变：int bool string tuple
# # 6.从键盘中输入5个学生的名字，存储到列表中，然后打印
# # 出每个学生名字中的第2个字母
# l = []
# for i in range(5):
#     name = input("请输入一个名字")
#     l.append(name)
# print(l)
# for name in l:
#     print(name[1])
#
# # # 7.随机生成五个数字保存在列表中，取反并输出至终端.(取反:求出相反数，随机数范围是0到100)
# import random
# l = []
# for i in range(5):
#     a = random.randint(1, 100)
#     l.append(a)
# print(l)
#
# # 8.将下列两个列表合并，将合并后的列表升序并输出.
# #方法一
# list1 = [1,3,4,5,7]
# list2 = [0,66,8,9]
# list1.extend(list2)     # 方法二  列表合并  list = list1 + list2
# list1.sort()
# print(list1)
#
# # 9.使用字典来存储一个人的信息(姓名、年龄[数字]、学号)，这些信息来自键盘的输入，储存完输出至终端.
# d = {"name":"","age":(),"sn":""}   #也可以写成 d = {}   当赋值没有对应的key时，增加键值对。否则只是修改
# name = input("请输入姓名")
# d["name"] = name
# age = input("请输入年龄")
# d["age"] = int(age)
# sn = input("请输入学号")
# d["sn"] = sn
# print(d)
#
# # 10.有下列字典dict1,查找值为“lebo”对应的key并输出到终端.(结果应该是输出school)(不会做)
# dict1={'school':'lebo','date':2018,'address':'beijing'}
# for x in dict1:
#     if x == "lebo":
#         print('school')
#
# # 11.使用切片翻转列表num，将翻转完后的列表中所有偶数位置的元素相加求和并输出至终端.
# num = [0,1,2,3,4,5,6,7,8,9]
# a = num[::-1]
# print(a)
# m = 0
# for i in range(10):
#     if i % 2 ==0:
#         m = num[i] + m
#     else:
#         pass
# print(m)



# # 总结：字符串
# str = "a23455   "   #不可变的有序字符串
# t1 = str[0]       #根据下标可以取到对应下标的值
# t2 = str[::-1]    #切片：（起始下标，结束下标，正序1/逆序-1）
# t3 = str[0:2]      #打印12   左闭右开
# t4 = str[:-5:-2]   #打印结果54   间隔2个，逆序展示
# l = len(str)      #字符串的长度
# a = str.find('5')   #正向找第一个出现的下标   打印下标4  如果找不到-1
# a1 = str.rfind("5")   #打印下标5  反向找第一个出现的下标
# a2 = str.index("5")  #正向找第一个出现的下标   打印下标4  如果找不到报错
# a3 = str.rindex("5")    #打印下标5  反向找第一个出现的下标
# c = str.count("5")    #打印 2   计数
# m = str.replace("5","a",1)  #打印1234a5   （替换前的值，替换后的值，替换个数）
# n = str.split('3')   #打印['12', '455']  根据什么分割
# t = str.title()    #首字母大写
# s = str.startswith("1")  # 打印结果是True  打印结果是布尔类型；是否按照括号中的值开始，是（True）,否（False）
# s1 = str.endswith("556")   #打印结果是布尔类型；是否按照括号中的值结尾，是（True）,否（False）
# b =  str.upper()        #str字符串所有字母变为大写
# b1 = str.lower()        #str字符串所有字母变为小写
# s = str.capitalize()    #首字母大写
# j = str.rjust(10,"m")   #打印mmmma23455   字符串在右边，填充内容在左边  （填充下标位置，填充内容）只能填1个字符
# j1 = str.ljust(10,"m")   #打印结果a23455mmmm   字符串在左边，填充内容在右边
# j2 = str.center(10,'m')   #打印结果是mma23455mm    居中填充
# p = str.strip()   #去掉两端空格
# pl = str.lstrip()   #去掉左边空格
# pr = str.rstrip()   #去掉右边空格
#
#
# # 列表:可变的有序的
# list = ["123","abccd","555"]
# ret = ''.join(list)    #打印类型是字符串，123abccd555   合并字符串
# print(ret)
# # #列表元素全部为字符串时，使用join转变为字符串；字符串使用split,转化为列表
# # #增加
# # 区别：   l.append("元素")  l.extend(list)  l.insert(2,"元素")
# list1 = ["strinnnn",12]
# a =list.append("567")    #打印结果是['123', 'abccd', '555', '567']
# b = list.extend(list1)    #打印结果['123', 'abccd', '555', '567', 'strinnnn', 12]
# list.insert(2,"pppp")   #打印结果['123', 'abccd', 'pppp', '555']  指定下标位置增加值
#
#
# #删除
# list.pop()    #括号为空时，默认删除末尾的值；也可以输入下标进行删除
# del list[0]     #删除下标对应的值
# list.remove("abccd")   #删除括号中的元素值
# list.clear()      #清空列表
# print(list)
#
#
# #元祖  不可变有序,只可查看
# tuple = (1,"stringdd",[123,"aaa"])
# a = (1)
# print(type(a))     #<class 'int'>    打印的是括号内本身的类型
# a = (1,)
# print(type(a))   #打印结果是<class 'tuple'>
# t = tuple[2]    #只能通过下标查询
# print(t)
#
# #字典比列表运用范围广，运行速度快。无序
# dict = {"key1":"value1","key2":"value2"}
# # #key是唯一的，且不可变。value可以一样，
# dict()   #空字典  s = str() l = list()
# d = {"name":"张三","sex":"女","class":"三班"}
# a = d["name"]     #打印结果是张三    通过key获取value
# key = d.keys()    #dict_keys(['name', 'sex', 'class'])   打印所有的key
# values = d.values()   #打印所有的value
# d["name"] ="wangwu"   #存在就修改，不存在增加
# del d["name"]     #删除键值对
# d.clear()    #清空字典
# d = dict.items()   #展示所有的键值对
# if "name" in d:      #in 后面可以带的东西  d d.keys  d.values   d.items
#     print("在")
# else:
#     print("不在")
#
# ret = d.setdefault("name1")  #有就打印出来，没有打印None
# ret = d.setdefault("name1","lisi")  # 首先判断keys中有无name ,有直接打印，没有则将添加进去
# ret = d.set("name")    #有就打印出来，没有不打印
# #setdefault和set区别：有就可以查出来  没有时， setdefault添加进去改变字典元素。但是set则不打印
# print(ret)
# print(d)

#列表转字符串  字符串转列表
# l = ['555',"","",'123']
# a = ''.join(l)
# b = list(a)
# print(b)

#字符串，元祖，列表，字典都可以循环便利
# s = "string"
# a =0
# for i in s:
#     a += 1
#     if a <=4:
#         print("zhij")
#
# t = (1,2,3,"555")
# a =0
# for i in t:
#     a += 1
#     if a <=4:
#         print("zhij")

#集合set  无序 元素不能重复，且为不可变类型
# set = set()   #空集合
#去重
# l = [1,2,2,3,5,7,9]
# a = set(l)   #将列表转化为集合{1, 2, 3, 5, 7, 9}
# b = list(a)   #将集合转化为列表[1, 2, 3, 5, 7, 9]
# print(b)

# 删除
my_Set = {1,3,5,7,"ssss",(1,2,3)}
# my_Set.pop()   #随意删除一个元素
# my_Set.remove("ssss")   #删除指定值
# my_Set.discard("ssss")  #删除指定值，不存在不管
# print(my_Set)
#增加
# my_Set.add("abc")    #增加1个元素
# my_Set.update("abcde")   #类似extend  一个一个的添加组合  {'e', 1, 3, 5, 'c', 'ssss', 7, (1, 2, 3), 'b', 'd', 'a'}
print(my_Set)

set1 = {1,3,5,7}
set2 = {1,3,5,7,10}
#交集
newset = set1 & set2
print(newset)
#并集
newset = set1 | set2
print(newset)